package com.inspinia.base.util;

import org.apache.ibatis.io.Resources;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.Reader;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Properties;

 /**
  * 对属性文件操作的工具类
  * 获取，新增，修改
  * 注意：	以下方法读取属性文件会缓存问题,在修改属性文件时，不起作用，
  *　InputStream in = PropertiesUtils.class.getResourceAsStream("/service.properties");
  *　解决办法：
  *　String savePath = PropertiesUtils.class.getResource("/service.properties").getPath();
  */
 public class PropertiesUtils {
     /**
      * 获取属性文件的数据 根据key获取值
      * @param key
      * @return
      */
     public static String findPropertiesKey(String key,String properties) {

         try {
             Properties prop = getProperties(properties);
             return prop.getProperty(key);
         } catch (Exception e) {
             return "";
         }

     }

     public static void main(String[] args) {
         Properties prop = new Properties();
         InputStream in = PropertiesUtils.class
                 .getResourceAsStream("/service.properties");
         try {
             prop.load(in);
             Iterator<Entry<Object, Object>> itr = prop.entrySet().iterator();
             while (itr.hasNext()) {
                 Entry<Object, Object> e = (Entry<Object, Object>) itr.next();
                 System.err.println((e.getKey().toString() + "" + e.getValue()
                         .toString()));
             }
             in.close();
         } catch (Exception e) {

         }
     }

     /**
      * 返回　Properties
      * @param
      * @return
      */
     public static Properties getProperties(String properties){
         Properties prop = new Properties();
         try {
             Reader reader = Resources.getResourceAsReader(properties);
             prop.load(reader);
             reader.close();
         } catch (Exception e) {
             return null;
         }
         return prop;
     }

     public static Properties getjdbcProperties(){
         Properties prop = new Properties();
         try {
             Reader reader = Resources.getResourceAsReader("/jdbc.properties");
             prop.load(reader);
             reader.close();
         } catch (Exception e) {
             return null;
         }
         return prop;
     }
     /**
      * 写入properties信息
      *
      * @param key
      *            名称
      * @param value
      *            值
      */
     public static void modifyProperties(String key, String value,String properties) {
         try {
             // 从输入流中读取属性列表（键和元素对）
             Properties prop = getProperties(properties);
             prop.setProperty(key, value);
             String path = PropertiesUtils.class.getResource(properties).getPath();
             FileOutputStream outputFile = new FileOutputStream(path);
             prop.store(outputFile, "modify");
             outputFile.close();
             outputFile.flush();
         } catch (Exception e) {
         }
     }
 }
